JavaScript Modul Xavfsizligi: Global Ilovalar Uchun Kodni Izolyatsiya Qilish Strategiyalari | MLOG | MLOG

AMD brauzer muhitlarida CommonJS'ga qaraganda modullarni asinxron yuklash orqali ishlash samaradorligini oshiradi. Shuningdek, u modulga asoslangan tuzilma tufayli yaxshi kod izolyatsiyasini taklif qiladi. Biroq, uning sintaksisi boshqa modul tizimlariga qaraganda ko'proq so'zli bo'lishi mumkin.

5. ECMAScript Modullari (ESM):

ESM JavaScript'ga o'rnatilgan standartlashtirilgan modul tizimidir. U bog'liqliklarni boshqarish uchun `import` va `export` kalit so'zlaridan foydalanadi. ESM zamonaviy brauzerlar va Node.js tomonidan (ba'zi sozlamalar bilan) qo'llab-quvvatlanadi.

Misol:

            // modulA.js

const secretKey = "verySecretKey";

export function encrypt(data) {
  // secretKey yordamida shifrlash mantig'i
  return data.split('').reverse().join(''); // Misol uchun soxta shifrlash
}

// modulB.js

import { encrypt } from './moduleA.js';

const encryptedData = encrypt("Sensitive Data");
console.log(encryptedData);

            

ESM bir nechta afzalliklarni taklif etadi, jumladan, statik tahlil (xatolarni erta aniqlashga yordam beradi), tree shaking (paket hajmini kamaytirish uchun ishlatilmaydigan kodni olib tashlash) va asinxron yuklash. Shuningdek, u mukammal kod izolyatsiyasini ta'minlaydi, chunki har bir modul o'z ko'lamiga ega va bog'liqliklar aniq e'lon qilingan.

Modul Tizimlaridan Tashqari Kodni Izolyatsiya Qilish Strategiyalari

To'g'ri modul tizimini tanlash muhim bo'lsa-da, xavfsizlikni kuchaytirish uchun qo'shimcha kodni izolyatsiya qilish strategiyalarini amalga oshirish mumkin:

1. Eng Kam Imtiyozlar Tamoyili:

Ushbu tamoyil har bir modul faqat o'z vazifalarini bajarish uchun zarur bo'lgan minimal darajadagi imtiyozlarga ega bo'lishi kerakligini bildiradi. Modullarga keraksiz ruxsatlar berishdan saqlaning. Masalan, ma'lumotlarni ko'rsatish uchun mas'ul bo'lgan modul maxfiy foydalanuvchi ma'lumotlariga yoki ma'muriy funksiyalarga kirish huquqiga ega bo'lmasligi kerak.

Misol: Foydalanuvchilar fayllarni yuklashi mumkin bo'lgan veb-ilovani ko'rib chiqing. Fayl yuklashlarni qayta ishlash uchun mas'ul bo'lgan modul serverda ixtiyoriy kodni bajarishga ruxsat bermasligi kerak. U faqat yuklangan faylni belgilangan katalogda saqlashi va asosiy tekshiruvlarni amalga oshirishi kerak.

2. Kiritishni Tekshirish va Tozalash:

Barcha foydalanuvchi kiritmalarini qayta ishlashdan oldin har doim tekshiring va tozalang. Bu saytlararo skripting (XSS) va SQL in'ektsiyasi (agar JavaScript backend'dagi ma'lumotlar bazasi bilan o'zaro aloqada bo'lsa) kabi turli xil hujumlarni oldini olishga yordam beradi. Kiritishni tekshirish ma'lumotlarning kutilgan format va diapazonga mos kelishini ta'minlaydi, tozalash esa potentsial zararli belgilarni olib tashlaydi yoki kodlaydi.

Misol: Blog posti uchun foydalanuvchi tomonidan taqdim etilgan matnni qabul qilganda, XSS hujumlarini oldini olish uchun HTML teglarini filtrlang va maxsus belgilarni ekrannlang. HTML tarkibini tozalash uchun DOMPurify kabi kutubxonalardan foydalaning.

3. Kontent Xavfsizlik Siyosati (CSP):

CSP - bu veb-sahifaga yuklashga ruxsat berilgan resurslarni boshqarish imkonini beruvchi brauzer xavfsizlik mexanizmi. Qattiq CSP ni belgilash orqali siz brauzerni ichki skriptlarni bajarishdan, ishonchsiz manbalardan resurslarni yuklashdan va boshqa potentsial xavfli harakatlardan saqlay olasiz. Bu XSS hujumlarini yumshatishga yordam beradi.

Misol: CSP sarlavhasi shunday ko'rinishi mumkin: `Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:`

Ushbu siyosat sahifaga bir xil manbadan (`'self'`) resurslarni va `https://example.com` dan skriptlar va uslublarni yuklashga ruxsat beradi. Rasmlarni bir xil manbadan yoki ma'lumot URI'lari sifatida yuklash mumkin. Boshqa manbadan kelgan har qanday boshqa resurs bloklanadi.

4. Subresurs Yaxlitligi (SRI):

SRI uchinchi tomon CDN'laridan (Kontent Yetkazib Berish Tarmoqlari) yuklagan fayllaringizning buzilmaganligini tekshirish imkonini beradi. Siz `